#!/bin/bash

# 删除当前目录下所有子目录中的nohup.out文件
# 提供两种模式：详细模式（默认）和简洁模式

# 解析命令行参数
VERBOSE=true
if [ "$1" = "-q" ] || [ "$1" = "--quiet" ]; then
    VERBOSE=false
fi

# 设置颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 显示使用说明
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
    echo "用法: $0 [选项]"
    echo "删除当前目录下所有子目录中的nohup.out文件"
    echo ""
    echo "选项:"
    echo "  -q, --quiet    静默模式，只显示汇总信息"
    echo "  -h, --help     显示此帮助信息"
    echo ""
    echo "示例:"
    echo "  $0              # 详细模式（默认）"
    echo "  $0 -q           # 静默模式"
    exit 0
fi

# 计数器
found_count=0
deleted_count=0

if [ "$VERBOSE" = true ]; then
    echo -e "${BLUE}开始扫描当前目录下的所有子目录中的nohup.out文件...${NC}"
    echo ""
fi

# 查找所有nohup.out文件（包括子目录）
while IFS= read -r -d '' file; do
    found_count=$((found_count + 1))
    
    if [ "$VERBOSE" = true ]; then
        # 获取文件大小（字节）
        file_size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null)
        
        # 转换文件大小为可读格式
        if [ $file_size -eq 0 ]; then
            size_display="0 bytes"
        elif [ $file_size -lt 1024 ]; then
            size_display="${file_size} bytes"
        elif [ $file_size -lt 1048576 ]; then
            size_display="$(( file_size / 1024 )) KB"
        else
            size_display="$(( file_size / 1048576 )) MB"
        fi
        
        echo -e "发现文件: ${YELLOW}$file${NC} (大小: $size_display)"
    fi
    
    # 删除文件
    if rm "$file" 2>/dev/null; then
        if [ "$VERBOSE" = true ]; then
            echo -e "  ${GREEN}✓ 已删除${NC}"
        fi
        deleted_count=$((deleted_count + 1))
    else
        if [ "$VERBOSE" = true ]; then
            echo -e "  ${RED}✗ 删除失败 (权限不足?)${NC}"
        fi
    fi
    
    if [ "$VERBOSE" = true ]; then
        echo ""
    fi
    
done < <(find . -name "nohup.out" -type f -print0 2>/dev/null)

# 输出统计结果
echo "================================================="
echo -e "${BLUE}扫描完成！${NC}"
echo -e "发现的文件数量: ${YELLOW}$found_count${NC}"
echo -e "成功删除的文件数量: ${GREEN}$deleted_count${NC}"

if [ $found_count -eq 0 ]; then
    echo -e "${GREEN}当前目录及其子目录中没有找到nohup.out文件${NC}"
elif [ $deleted_count -eq $found_count ]; then
    echo -e "${GREEN}所有nohup.out文件已成功删除！${NC}"
elif [ $deleted_count -gt 0 ]; then
    failed_count=$((found_count - deleted_count))
    echo -e "${YELLOW}有 $failed_count 个文件删除失败，可能是权限问题${NC}"
else
    echo -e "${RED}所有文件删除都失败了，请检查权限${NC}"
fi

echo "================================================="

# 简洁版本的一行命令（作为注释提供）
# find . -name "nohup.out" -type f -delete
